package com.itheima.api.exception.demo11;

import java.util.Scanner;

/**
 * 自定义异常：
 *
 * 什么是自定义异常   ----> 就是我们自己去定义一个异常
 * 为什么要有自定义异常？
 *
 * java针对不同的问题给出了不同的异常类，来进行描述。但是java能把我们程序中所有的问题都考虑到呢？比如有一些业务方法的问题，java根据
 * 没有办法对这个问题进行描述，因此也就没有提供对应的类。
 *
 * 我们需要校验老师给学生考试的打分，如果打分
 * 不在指定的范围内，就抛出异常；提示："你给的分数有误，分数应该在0-100之间"
 *
 * 怎么去自定义异常？ 就是去定义一个类，然后让其继承Exception或者RuntimeException
 *
 * 如果我们这个类是继承了Exception，那么我们所定义的这个异常就是编译期异常
 * 如果我们这个类是继承了RuntimeException，那么我们所定义的这个异常就是运行期异常
 *
 * 一般情况下，我们都是让我们自己的这个类去继承RuntimeException
 *
 */
public class ExceptionDemo01 {

    public static void main(String[] args) {

        // 1. 键盘录入老师给学员的打分
        Scanner scanner = new Scanner(System.in) ;
        System.out.println("请您录入一个分数：");
        String next = scanner.next();

        // 2. 校验这个打分，如果这个打分不在指定的范围内，直接抛出异常
        int parseInt = Integer.parseInt(next);
        if(parseInt > 100 || parseInt < 0) {

            // 直接抛出异常
            throw new ScoreException("你给的分数有误，分数应该在0-100之间") ;

        }

        // 3. 如果程序没有抛出异常，那么给出提示信息
        System.out.println("您的考试分数为：" + parseInt);

    }


}
